// 输入框封装 - 全局
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:oktoast/oktoast.dart';
import 'package:provider/provider.dart';

import '../repository/datas/TangeEqData.dart';
import '../repository/datas/TangeEqFilter.dart';
import '../theme.dart';
import '../utils/LogUtils.dart';
import '../utils/constants.dart';
import '../utils/sp_utils.dart';

/// 上拉筛选框
/// 内容单选-滚动

// Widget commonInput(
//     {String? labelText,
//     TextEditingController? controller,
//     ValueChanged<String>? onChanged,
//     bool? obscureText}) {
//   return TextField(
//     obscureText: obscureText ?? false,
//     controller: controller,
//     onChanged: onChanged,
//     // 输入颜色
//     style: TextStyle(color: Colors.white, fontSize: 14),
//     // 光标颜色
//     cursorColor: Colors.white,
//     //  输入框样式
//     decoration: InputDecoration(
//         // 未获取焦点样式
//         enabledBorder: OutlineInputBorder(
//             borderSide: BorderSide(color: Colors.white, width: 0.5)),
//         // 获取焦点样式
//         focusedBorder: OutlineInputBorder(
//             borderSide: BorderSide(color: Colors.white, width: 1)),
//         // 文本 - 文本样式
//         labelText: labelText,
//         labelStyle: TextStyle(color: Colors.white)),
//   );
// }

// 按钮
// title - 按钮名称
// 返回点击事件
// Widget wgiteBorderButton({required String title, GestureTapCallback? onTap}) {
//   return GestureDetector(
//       onTap: onTap,
//       child: Container(
//         alignment: Alignment.center,
//         width: double.infinity,
//         height: 45,
//         margin: EdgeInsets.only(left: 40, right: 40),
//         decoration: BoxDecoration(
//             borderRadius: BorderRadius.all(Radius.circular(22.5)),
//             border: Border.all(color: Colors.white, width: 1)),
//         child: Text(
//           title,
//           style: TextStyle(color: Colors.white, fontSize: 15),
//         ),
//       ));
// }

/// 中间件
/// 负责设备选中和视图刷新
class GroupValueProvider with ChangeNotifier {
  // 设备-id
  String _groupValue = "99999";

  // 设备-类型
  String _groupfilterValue = "99999";

  // 设备-id
  String get groupValue => _groupValue;

  // 设备-类型
  String get groupfilterValue => _groupfilterValue;

  GroupValueProvider() {
    // 从缓存中获取初始值
    SpUtils.getString(Constants.BUT_PROP_PRICE).then((value) {
      LogUtils.e(value);
      _groupValue = value ?? "";
      // 通知视图更新
      notifyListeners();
    });

    SpUtils.getString(Constants.BUT_FILTER_PRICE).then((value) {
      _groupfilterValue = value ?? "";
      // 通知视图更新
      notifyListeners();
    });
  }

  void setGroupValue(String? value, String? fluttervalue) {
    // LogUtils.e(value);
    // 设备id
    _groupValue = value ?? "";
    SpUtils.saveString(Constants.BUT_PROP_PRICE, "${value}");

    // 设备类型
    _groupfilterValue = fluttervalue ?? "";
    SpUtils.saveString(Constants.BUT_FILTER_PRICE, "${fluttervalue}");

    LogUtils.e(_groupfilterValue);

    // 通知视图更新
    notifyListeners();
  }
}

// 底部弹窗 - 全部设备
Future<int?> botttomshow(context, String title, List<TangeEqData>? data,
    GestureTapCallback? onTap) async {
  return showModalBottomSheet(
    //showModalBottomSheet函数底部面板相当于一个新的页面
    backgroundColor: Colors.transparent,
    //颜色空白
    isDismissible: true,
    //能否点击消失
    isScrollControlled: true,
    //能否拖动消失
    context: context,
    //接受cotext
    builder: (context) {
      return ChangeNotifierProvider(
          create: (context) => GroupValueProvider(),
          child: Consumer<GroupValueProvider>(
            builder: (context, vm, child) {
              // 判断 data 是否有值
              // if (data != null && data.isNotEmpty) {
              //   vm.setGroupValue(data[0]?.deviceId,"");
              // }
              return Container(
                width: MediaQuery.of(context).size.width,
                height: MediaQuery.of(context).size.height * 0.6, //使用屏幕宽高比设置大小
                decoration: BoxDecoration(
                  color: Colors.white,
                  borderRadius: BorderRadius.only(
                    //圆角
                    topLeft: Radius.circular(30), //左上角的圆角
                    topRight: Radius.circular(30), //右上角的圆角
                  ),
                ),
                child: Column(
                  children: [
                    Row(
                      mainAxisAlignment: MainAxisAlignment.center,
                      // 确保按钮和文字之间有足够的空间
                      children: [
                        IconButton(
                          icon: Icon(Icons.chevron_left_outlined),
                          onPressed: () {
                            Navigator.pop(context);
                          },
                        ),
                        Expanded(
                          child: Center(
                            child: Text(
                              title,
                              style: TextStyle(fontSize: 16), // 可以根据需要调整字体大小
                            ),
                          ),
                        ),
                        SizedBox(width: 48), // 为了保持按钮位置不变，添加一个占位符
                      ],
                    ),
                    Expanded(
                      child: ListView.builder(
                        itemCount: (data?.length ?? 0) + 1, // 增加一个固定的项
                        itemBuilder: (context, index) {
                          if (index == 0) {
                            // 第一个项是固定的“全部”选项
                            return ListTile(
                              title: Text("全部"),
                              trailing: Container(
                                margin: EdgeInsets.only(top: 15),
                                child: Radio(
                                  value: "99999", // 固定值为 99999
                                  groupValue: vm.groupValue,
                                  onChanged: (value) {
                                    showToast('点击了全部');
                                    vm.setGroupValue("99999", "");
                                  },
                                  activeColor:
                                      SampleThemeConfigure.colorPrimary,
                                ),
                              ),
                            );
                          } else {
                            // 其他项正常显示
                            final itemIndex = index - 1; // 因为第一个项是固定的，所以需要调整索引
                            return ListTile(
                              title: Text("${data?[itemIndex]?.deviceName}"),
                              trailing: Container(
                                margin: EdgeInsets.only(top: 15),
                                child: Radio(
                                  value: data?[itemIndex]?.deviceId,
                                  groupValue: vm.groupValue,
                                  onChanged: (value) {
                                    showToast('点击了${value}');
                                    vm.setGroupValue(
                                        data?[itemIndex]?.deviceId, "");
                                  },
                                  activeColor:
                                  SampleThemeConfigure.colorPrimary,
                                ),
                              ),
                            );
                          }
                        },
                      ),
                    ),
                    Row(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        Expanded(
                          child: SizedBox(
                            height: 45, // 按钮的高度
                            child: TextButton(
                              onPressed: () {
                                // 取消按钮的点击事件
                                Navigator.pop(context);
                              },
                              child:
                              Text(
                                '取消',
                                style: TextStyle(
                                  fontSize: 16.sp,
                                  color: Colors.grey, // 设置文本颜色为灰色
                                ),
                              ),
                            ),
                          ),
                        ),
                        Container(
                          width: 1,
                          height: 15, // 竖线的高度
                          color: Colors.grey, // 竖线的颜色
                        ),
                        Expanded(
                          child: SizedBox(
                            height: 45, // 按钮的高度
                            child: TextButton(
                              onPressed: onTap,
                              child: Text(
                                '确定',
                                style: TextStyle(
                                    color: Colors.blue,
                                    fontSize: 16.sp), // 确定按钮的文字颜色为蓝色
                              ),
                            ),
                          ),
                        ),
                      ],
                    ),
                  ],
                ),
              );
            },
          ));
    },
  );
}

// 底部弹窗 - 全部筛选类型
Future<int?> botttomfiltershow(context, String title, List<TangeEqFilter>? data,
    GestureTapCallback? onTap) async {
  return showModalBottomSheet(
    //showModalBottomSheet函数底部面板相当于一个新的页面
    backgroundColor: Colors.transparent,
    //颜色空白
    isDismissible: true,
    //能否点击消失
    isScrollControlled: true,
    //能否拖动消失
    context: context,
    //接受cotext
    builder: (context) {
      return ChangeNotifierProvider(
          create: (context) => GroupValueProvider(),
          child: Consumer<GroupValueProvider>(
            builder: (context, vm, child) {
              // 判断 data 是否有值
              // if (data != null && data.isNotEmpty) {
              //   vm.setGroupValue("","tag");
              // }
              return Container(
                width: MediaQuery.of(context).size.width,
                height: MediaQuery.of(context).size.height * 0.6, //使用屏幕宽高比设置大小
                decoration: BoxDecoration(
                  color: Colors.white,
                  borderRadius: BorderRadius.only(
                    //圆角
                    topLeft: Radius.circular(30), //左上角的圆角
                    topRight: Radius.circular(30), //右上角的圆角
                  ),
                ),
                child: Column(
                  children: [
                    Row(
                      mainAxisAlignment: MainAxisAlignment.center,
                      // 确保按钮和文字之间有足够的空间
                      children: [
                        IconButton(
                          icon: Icon(Icons.chevron_left_outlined),
                          onPressed: () {
                            Navigator.pop(context);
                          },
                        ),
                        Expanded(
                          child: Center(
                            child: Text(
                              title,
                              style: TextStyle(fontSize: 16), // 可以根据需要调整字体大小
                            ),
                          ),
                        ),
                        SizedBox(width: 48), // 为了保持按钮位置不变，添加一个占位符
                      ],
                    ),
                    Expanded(
                      child: ListView.builder(
                          itemCount: data?.length,
                          itemBuilder: (context, index) {
                            return ListTile(
                              title: Text("${data?[index]?.name}"),
                              trailing: Container(
                                margin: EdgeInsets.only(top: 15),
                                // 调整这个值来控制偏移量
                                child: Radio(
                                  value: data?[index]?.tag,
                                  groupValue: vm.groupfilterValue,
                                  onChanged: (value) {
                                    showToast('点击了${value}');
                                    vm.setGroupValue("", value);
                                  },
                                  activeColor:
                                  SampleThemeConfigure.colorPrimary,
                                ),
                              ),
                            );
                          }),
                    ),
                    Row(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        Expanded(
                          child: SizedBox(
                            height: 45, // 按钮的高度
                            child: TextButton(
                              onPressed: () {
                                // 取消按钮的点击事件
                                Navigator.pop(context);
                              },
                              child:
                              Text(
                                '取消',
                                style: TextStyle(
                                  fontSize: 16.sp,
                                  color: Colors.grey, // 设置文本颜色为灰色
                                ),
                              ),
                            ),
                          ),
                        ),
                        Container(
                          width: 1,
                          height: 15, // 竖线的高度
                          color: Colors.grey, // 竖线的颜色
                        ),
                        Expanded(
                          child: SizedBox(
                            height: 45, // 按钮的高度
                            child: TextButton(
                              onPressed: onTap,
                              child: Text(
                                '确定',
                                style: TextStyle(
                                    color: Colors.blue,
                                    fontSize: 16.sp), // 确定按钮的文字颜色为蓝色
                              ),
                            ),
                          ),
                        ),
                      ],
                    ),
                  ],
                ),
              );
            },
          ));
    },
  );
}
